From 6ee3ca3d31fa4fd99f6ed7312e24aa9397d1142c Mon Sep 17 00:00:00 2001 From: =?utf8?q?Marco=20Trevisan=20=28Trevi=C3=B1o=29?= Date: Thu, 8 Jul 2021 16:11:33 +0200 Subject: [PATCH] debian/rules: Move test script to an easier to maintain external file We're doing lots of operations to run tests, it's better to have the setup in an external script that it's easier to run, debug and maintain --- debian/rules | 47 +++------------------------- debian/run-tests.sh | 76 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 80 insertions(+), 43 deletions(-) create mode 100755 debian/run-tests.sh diff --git a/debian/rules b/debian/rules index cd3aba497b..6913ea62d0 100755 --- a/debian/rules +++ b/debian/rules @@ -205,49 +205,10 @@ xfail_reftests = \ # gtk:gsk+gsk-compare+gsk-broadway+gsk-compare-broadway / broadway blend-difference # s390x: many (endianness?) override_dh_auto_test: - rm -f debian/tests-failed - set -e; for reftest in $(fuzzy_reftests); do \ - cp debian/close-enough.keyfile \ - testsuite/reftests/$$reftest.keyfile; \ - done - # So that gsettings can find the (uninstalled) gtk schemas - mkdir -p debian/build/glib-2.0/schemas/ - cp gtk/org.gtk.* debian/build/glib-2.0/schemas/ - glib-compile-schemas debian/build/glib-2.0/schemas/ - # Remove LD_PRELOAD so we don't run with fakeroot, which makes dbus-related tests fail - env \ - -u LD_PRELOAD \ - GIO_MODULE_DIR=/nonexistent \ - GIO_USE_VFS=local \ - GIO_USE_VOLUME_MONITOR=unix \ - dbus-run-session -- \ - xvfb-run -a -s "-screen 0 1024x768x24 -noreset" \ - debian/tests/run-with-locales \ - --generate de_DE.UTF-8 \ - --generate en_GB.UTF-8 \ - --generate en_US.UTF-8 \ - --generate sv_SE \ - -- \ - dh_auto_test \ - --builddirectory=debian/build/deb \ - -- \ - --setup=x11 \ - --timeout-multiplier $(test_timeout_multiplier) \ - || touch debian/tests-failed - tail -v -n +0 debian/build/deb/meson-logs/testlog-x11.txt - # Don't base64-encode the image results for tests that upstream - # expect to fail - set -e; for reftest in $(xfail_reftests); do \ - rm -f debian/build/deb/testsuite/reftests/output/x11/$$reftest.diff.png; \ - done - # Put the rest in the log as base64 since we don't have an - # equivalent of AUTOPKGTEST_ARTIFACTS for buildds - debian/log-reftests.py - # Avoid incremental builds with -nc leaking settings into the next build - set -e; for reftest in $(fuzzy_reftests); do \ - rm -f testsuite/reftests/$$reftest.keyfile; \ - done - if test -e debian/tests-failed; then exit 1; fi + env BUILDDIR=debian/build/deb \ + FUZZY_REFTESTS="$(fuzzy_reftests)" \ + XFAIL_REFTESTS="$(xfail_reftests)" \ + debian/run-tests.sh -t $(test_timeout_multiplier) override_dh_auto_install: dh_auto_install --builddirectory=debian/build/deb --destdir=debian/install/deb diff --git a/debian/run-tests.sh b/debian/run-tests.sh new file mode 100755 index 0000000000..70df6d3577 --- /dev/null +++ b/debian/run-tests.sh @@ -0,0 +1,76 @@ +#!/bin/sh + +set -ex + +BUILDDIR=${BUILDDIR:-debian/build/deb} +BACKEND=${BACKEND:-x11} + +FUZZY_REFTESTS=${FUZZY_REFTESTS:-} +XFAIL_REFTESTS=${XFAIL_REFTESTS:-} + +test_data="$(mktemp -d -t debian-test-data-XXXXXXXX)" +mkdir -p "$test_data" + +cleanup() { + rm -rf "$test_data" + rm -f "$BUILDDIR/meson-logs/testlog-$BACKEND.txt" + + # Avoid incremental builds with -nc leaking settings into the next build + for reftest in $FUZZY_REFTESTS; do + rm -f "testsuite/reftests/$reftest.keyfile" + done +} + +trap 'cleanup' EXIT INT + +if [ ! -d "$HOME" ]; then + export HOME="$test_data/home" + mkdir -p "$HOME" +fi + +if [ ! -d "$XDG_RUNTIME_DIR" ]; then + export XDG_RUNTIME_DIR="$test_data/xdg-runtime" + mkdir -p "$XDG_RUNTIME_DIR" +fi + +for reftest in $FUZZY_REFTESTS; do + cp debian/close-enough.keyfile "testsuite/reftests/$reftest.keyfile" +done + +# So that gsettings can find the (uninstalled) gtk schemas +mkdir -p "$test_data/glib-2.0/schemas/" +cp gtk/org.gtk.* "$test_data/glib-2.0/schemas/" +glib-compile-schemas "$test_data/glib-2.0/schemas/" + +# Remove LD_PRELOAD so we don't run with fakeroot, which makes dbus-related tests fail +env \ + -u LD_PRELOAD \ + GIO_MODULE_DIR=/nonexistent \ + GIO_USE_VFS=local \ + GIO_USE_VOLUME_MONITOR=unix \ + dbus-run-session -- \ + xvfb-run -a -s "-screen 0 1024x768x24 -noreset" \ + debian/tests/run-with-locales \ + --generate de_DE.UTF-8 \ + --generate en_GB.UTF-8 \ + --generate en_US.UTF-8 \ + --generate sv_SE \ + -- \ + meson test -C "$BUILDDIR" \ + --setup="$BACKEND" \ + "$@" \ + || touch "$test_data/tests-failed" + +tail -v -n +0 "$BUILDDIR/meson-logs/testlog-$BACKEND.txt" || true + +# Don't base64-encode the image results for tests that upstream +# expect to fail +for reftest in $XFAIL_REFTESTS; do + rm -f "$BUILDDIR/testsuite/reftests/output/$BACKEND/$reftest.diff.png" +done + +# Put the rest in the log as base64 since we don't have an +# equivalent of AUTOPKGTEST_ARTIFACTS for buildds +debian/log-reftests.py + +[ -e "$test_data/tests-failed" ] && exit 1 || exit 0 -- 2.30.2